package com.xlh.support.training.service;

import com.xlh.support.training.domain.Training;
import com.xlh.support.training.domain.TrainingAttr;
import com.xlh.support.training.po.TrainingSavePO;
import com.xlh.vo.IconVO;

import java.util.List;

/**
 * @author cheer
 */
public interface TrainingService {

    /**
     * 查询实训图标
     *
     * @return 实训图标
     */
    List<IconVO> listTrainingIcons();

    /**
     * 查询所有已发布的实训列表
     *
     * @return 实训列表
     */
    List<TrainingAttr> listPublishedTrainings();

    /**
     * 查询可编辑的实训列表
     *
     * @param userId    用户Id
     * @param isTeacher 是否为教师
     * @return 实训列表
     */
    List<TrainingAttr> listEditableTrainings(Long userId, Boolean isTeacher);

    /**
     * 更新实训发布状态
     *
     * @param userId     用户Id
     * @param trainingId 实训Id
     * @param published  发布状态
     */
    void updatePublishStatus(Long userId, Long trainingId, Boolean published);

    /**
     * 创建实训
     *
     * @param trainingSavePO 实训创建参数
     */
    void createTraining(TrainingSavePO trainingSavePO);

    /**
     * 删除实训
     *
     * @param trainingId 实训Id
     */
    void deleteTraining(Long trainingId);

    /**
     * 修改实训
     *
     * @param trainingId     实训Id
     * @param trainingSavePO 实训修改参数
     */
    void updateTraining(Long trainingId, TrainingSavePO trainingSavePO);

    /**
     * 查询实训
     *
     * @param trainingId 实训Id
     * @return 环境实训
     */
    Training getTraining(Long trainingId);
}
